#include <stdio.h>
#include <stdlib.h>
#include "operate.h"


void twoarr_init(char (*p)[COLUMN], int row, int column)
{
    int i, j;

    for (i = 0; i < row; i++)
        for (j = 0; j < column; j++)
            p[i][j] = '+';
}


void draw_chessbd(char (*p)[COLUMN], int row, int column)
{
    int i, j;
    
    printf("* L ");
    for (i = 0; i < column; i++)
        printf("%x ", i);
    putchar(10);

    printf("H * ");
    for (i = 0; i < row; i++)
        printf("- ");
    putchar(10);

    for (i = 0; i < row; i++)
    {
        printf("%x | ", i);
        for (j = 0; j < column; j++)
        {
            printf("%c ", p[i][j]);
        }
        putchar(10);
    }       
}


void startx(void)
{
    system("clear");
    putchar(10);
    printf("\t╔══════════════════════════════════════════════════════════════╗\n");
    printf("\t║                                                              ║\n");
    printf("\t║       欢迎使用五子棋对战程序     祝您玩的愉快挑战无极限      ║\n");
    printf("\t║                                                              ║\n");
    printf("\t║                  ._______________________.                   ║\n"); 
    printf("\t║                  | _____________________ |                   ║\n");
    printf("\t║                  | I                   I |                   ║\n");
    printf("\t║                  | I     五 子 棋      I |                   ║\n");
    printf("\t║                  | I                   I |                   ║\n");
    printf("\t║                  | I   made by HUOTY   I |                   ║\n");
    printf("\t║                  | I___________________I |                   ║\n");
    printf("\t║                  !_______________________!                   ║\n");
    printf("\t║                      ._[__________]_.                        ║\n");
    printf("\t║                  .___|_______________|___.                   ║\n");
    printf("\t║                   |::: ____             |                    ║\n"); 
    printf("\t║                   |    ~~~~ [CD-ROM]    |                    ║\n");
    printf("\t║                   !_____________________!                    ║\n");
    printf("\t║                                                              ║\n");
    printf("\t║                                                              ║\n");
    printf("\t║          寒 星 溪 月 疏 星 首，花 残 二 月 并 白 莲。        ║\n");
    printf("\t║          雨 月 金 星 追 黑 玉，松 丘 新 宵 瑞 山 腥。        ║\n");
    printf("\t║          星 月 长 峡 恒 水 流，白 莲 垂 俏 云 浦 岚。        ║\n");
    printf("\t║          黑 玉 银 月 倚 明 星，斜 月 明 月 堪 称 朋。        ║\n");
    printf("\t║          二 十 六 局 先 弃 二，直 指 游 星 斜 彗 星。        ║\n");
    printf("\t║                                                              ║\n");
    printf("\t║                                                              ║\n");
    printf("\t║       1: 人机对战          2: 人人对战          q: 退出      ║\n");
    printf("\t║                                                              ║\n");
    printf("\t╚══════════════════════════════════════════════════════════════╝\n");
}


void get_in(int *x, int *y)
{
    printf("Please enter your position of chess pieces\n");
LOOP:    printf("row: ");
    scanf("%x", x);
    getchar();
    printf("column: ");
    scanf("%x", y);
    getchar();

    if (*x < 0 || *x >= ROW || *y < 0 || *y >= COLUMN)
    {
        putchar(10);
        puts("Your input position is illegal!");
        printf("Row and Column is a number of 0~%d\n", ROW);
        puts("Please input again");
        goto LOOP;
    }
}


/* 判断行 */
char  yn_row(char (*p)[COLUMN], int row, int column)
{
    int i, j;
    int c;

    for (i = 0; i < row; i++)
    {
        c = 0;
        for (j = 0; j < column; j++)
        {
            if (p[i][j] == 'Y')
                c++;
            else if ( c < 5)
                c = 0;
        }
        if (c >= 5)
            return 'y';
    }

    return 'n';
}


/* 判断列 */
char  yn_column(char (*p)[COLUMN], int row, int column)
{
    int i, j;
    int c;

    for (i = 0; i < row; i++)
    {
        c = 0;
        for (j = 0; j < column; j++)
        {
            if (p[j][i] == 'Y')
                c++;
            else if (c < 5)
                c = 0;
        }
        if (c >= 5)
            return 'y';
    }
    
    return 'n';
}


/* 判断对角 */
char  yn_diagonal(char (*p)[COLUMN], int row, int column)
{
    int m;
    int i, j;
    int c;

    /* 左上方 */
    for (m = 0; m < row; m++)
    {
        c = 0;
        for (i = m, j = 0; i >= 0; i--, j++)
            if (p[i][j] == 'Y')
                c++;
            else if (c < 5)
                c = 0;
        if (c >= 5)
            return 'y';
    }

    /* 右下方 */
    for (m = 0; m < row - 1; m++)
    {
        c = 0;
        for (i = row - 1, j = i - m; j <= row - 1; i--, j++)
            if (p[i][j] == 'Y')
                c++;
            else if (c < 5)
                c = 0;
        if (c >= 5)
            return 'y';
    }

    /* 左下方 */
    for (m = row - 1; m >= 0; m--)
    {
        c = 0;
        for (i = m, j = 0; i <= row - 1; i++, j++)
            if (p[i][j] == 'Y')
                c++;
            else if (c < 5)
                c = 0;
        if (c >= 5)
            return 'y';
    }

    /* 右上方 */
    for (m = row - 1; m >= 1; m--)
    {
        c = 0;
        for (i = 0, j = m; j <= row - 1; i++, j++)
            if (p[i][j] == 'Y')
                c++;
            else if (c < 5)
                c = 0;
        if (c >= 5)
            return 'y';
    }

    return 'n';
}



#ifdef DEBUG
/*************************************************************************
 * FuncName: main
 *    Input: None
 *   Output: None
 *  Val-Res: None
 *   Return: 0
 *    Brief: Main program body!
*************************************************************************/
int main(void)
{
	

    return 0;
}
#endif


/************************ (C) COPYRIGHT HOUTY PRIVATE ********END OF FILE****/

